package br.com.ceped.controlador;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Restrictions;

import br.com.ceped.dao.Dao;
import br.com.ceped.dao.IDao;
import br.com.ceped.modelo.Contador;
import br.com.ceped.modelo.Contador_PK;

public class ControladorContador implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void cadastrar_contador(Contador contador,Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		dao.saveOrUpdate(contador);
	}
	
	public void remover_contador(Contador contador,Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		dao.delete(contador);
	}
	
	public void editar_contador(Contador contador,Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		dao.update(contador);
	}
	
	public Contador procurar_contador(Contador_PK contador_PK,Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		return dao.load(contador_PK);
	}
	
	public List<Contador> listar_contador(Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		return dao.list();
	}
	
	public List<Contador> listar_contador(String nome_campo,Long valor_campo,Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		return dao.list(nome_campo,valor_campo);
	}
	/**Esse metodo entra com a seguinte finalidade, vai listar todos os equipamentos em que o codigo sejaque e que o campo seja maior que zeri */
	public List<Contador> listar_contador(String nome_campo,Long valor_campo,String nome_campo2,int valor_campo2,Session s){
		IDao<Contador> dao = new Dao<Contador>(s, Contador.class);
		return dao.list(nome_campo,valor_campo,nome_campo2,valor_campo2);
	}
	
	@SuppressWarnings("unchecked")
	public List<Contador> listar_contador(String nome_campo,Long valor_campo,String comparar,String compara2,Session s){
		Criteria c = s.createCriteria(Contador.class);
		c.add(Expression.eq(nome_campo, valor_campo));
		c.add(Restrictions.not(Expression.eqProperty(comparar, compara2)));
		c.setCacheable(true);
		return c.list();
	}
	
}
